突撃!隣の開発環境 パート9【nanapi編】
こんにちは!おおはしりきたけです。今回も突撃!隣の開発環境という形でイケてる開発会社さんの開発環境についてインタビューさせてもらいました。第9弾として、nanapiさんに訪問させてもらいました。インタビューに答えていただいたのはCTOの和田さん、CCO/デザイナーの上谷さんです。
突撃!隣の開発環境とは
技術事例やノウハウなどは、ブログや勉強会などで共有されることが多いと思います。しかし、各社の開発環境や開発体制などは意外と共有されていないこと多いと思います。ノウハウの流出になるかもしれませんが、それ以上に、より良い開発を目指している会社さん同士で情報交換を行い、良いチーム、良いプロダクトを作っていくという志の会社さんの為の情報共有のための企画になります。開発環境や開発体制なども技術領域によっても変わってくると思いますが、この突撃!隣のシリーズでは様々な会社さんのイケてるツールの使い方や、仕事が捗る開発体制についてインタビューを行っていく予定です。
nanapi紹介
どんなことをやっているのか?
nanapiさんは「できることをふやす」というビジョンを掲げており、「nanapi」というHowtoコンテンツサービスや、即レスコミュニティアプリの「アンサー」などをリリースしています。「nanapi」は月間5000万PV、ユニークユーザーが月間1100万人おり、生活の基本的なものから、プロの意見が必要とされる情報まで掲載されている日本最大級のハウツー情報提供サービスです。「アンサー」はスマートフォンで簡単に悩みや関心ごとについてコミュニケーションを図ることができるアプリです。アンサーはGooglePlay2014年のベストアプリにも選ばれています。
開発環境について
まずは、nanapiさんの開発環境について色々と伺っていこうかと思います。
開発端末
nanapiさんでは、MacBookProの13インチを利用している方が多く、エンジニアの方は27インチのディスプレイ、デザイナーの方はThunderboltDislplayを利用しているとのことでした。必要な人には追加でモニタの支給もありますし、BYOD制度ということで、普段利用するツールなどは2万円まで購入OKとのことです。やはりキーボードを購入する方が多いとのことでした。
コミュニケーションツール
プロジェクトを円滑にするために様々なコミュニケーションツールを使うことになります。チャットやチケットの管理、仕様の共有などどのように行っているのか聞いてみました。
チャットツール
nanapiさんでは、チャットツールとしてSlackを利用しています。会社で1つで話題毎にチャンネルが立てられており、チャンネルは現状で200以上あり、ルールとしては基本オープンにしてるとのことでした。テスト結果やCircleCIの結果が流れてきたり、Hubotを使ってChatOpsでデプロイすることなどもできるようです。nanapiさんはオフィスでチーム毎に作業をしていることが多いため、チャットを中心に議論をするというよりは、対面で議論をすることのほうが多いということでした。
プロジェクト管理ツール
チームごとに異なるということで、githubのissueを使っていたり、最近では、Pivoral Trackerを使っているチームも多いとのことでした。Pivotal Trackerはユーザーストーリー単位で登録していくことが多いですが、そこまでアジャイル(Scrum)のような形で厳密に利用しているというよりは、タスク管理ツールとして利用しているとのことでした。足りない部分は対面で補完をしてチーム毎にやりやすい形で進めていると感じました。
仕様の共有方法
Qiita Teamに仕様をまとめていくことが多く、会社の文化としてシェアをしていくという考えになっているので、何でもオープンに書いていくということで、サービスの仕様など以外にも、ランチ情報や勉強会のレポートなどもQiita Teamに書いているとのことでした。ソースコードを書く比率が多くなると仕様の認識ズレなども出ることが多いため、仕様を明記しておくというのは非常に重要だと思います。
リポジトリ
githubを使っており、リポジトリ数は45個程度あるということでした。運用フローとしては、githubフローでやっており、Pull Requestでのソールレビューを行っているとのことでした。レビューはチーム内でレビューする感じでやっていますが、チームと相手によってレビューの粒度を変えているということでした。レビューと言うのはより良いコードを書くというためには必要な作業ではあるんですが、バランスがすごく重要だと思っており、ビジネスのスピードとコードの品質という部分で、非常にバランスのとれたレビューをしていると感じました。
自動化ツール
CI環境は、現状だとTravisCI、CircleCIなどのCIサービスを使っている一方で、一部Jenkinsを利用しているということでした。主にテストやビルドで利用しており、Jenkinsについてはメンテコストも掛かるため、今後は極力なくしていく方向で考えているとのことでした。自動化やテストについては、現在整備中でこれから力を入れていく部分ということでした。
デザインツール
基本としては、AdobeのPhotoshop、Illustratorなどを利用していますが、nanapiさんでは、基本的にペーパープロトタイプでエンジニアと会話を行ない、iOSアプリに関してはスタイルガイド等を作って、パーツをgithubにpushする方法ですが、Androidアプリについては、デザイナーがXMLでレイアウトの定義を行ってgithubにpushしているとのことでした。iOSとAndroidは、デザインが一緒に思われがちですが、実は全然別物でiOSとAndroidでデザインの定義をする必要があります。細かい所もかなり違うのでスピード感を出すために、デザイナーさんが直接コードを書くというのは凄いことだと思います。また、インタラクションの共有などはKeynoteのアニメーションや、AdobeのFlashでアニメーションを作って共有したりするとのことでした。
開発体制
開発チームについて
nanapiさんのエンジニア構成は以下のようになっています。
- エンジニア:11名
- iOS/Androidエンジニア:4名
- サーバーサイドエンジニア:6名
- インフラエンジニア:1名
- デザイナ:8名
サーバーサイドで一番多く使われている言語はRuby(on Rails)で、「アンサー」はPHP(Cake)で作られており、その他はGoなども利用されているとのことでした。GoからDockerを使うと使いやすいっということで利用しているそうです。
写真はスタンディングデスクで仕事をするエンジニアさん。スタンディングデスクを行うための基礎はDIYだそうです!
開発プロセスについて
10時に出勤したら、朝会(今日やること、昨日やったこと)を行うそうです。上述しましたが、カンバンなども利用されているのでその前で、朝会を行うとのことです。プロダクトの立ち上がりには非常に時間を掛けて議論を行い、エンジニアもデザイナーも全員ユーザー価値ベースで考えているということで議論も活発に行われているそうです。
アプリを作る前に、ユーザー体験の設計を行い、ペルソナ、エクスペリエンスマップ等を作っているそうです。ユーザーの価値を一番に考えているからこそ、最初のコンセプトやユーザーへの価値については時間を掛けて議論をしているとのことでした。一番時間がかかるのもこのフェーズということでした。
nanapiさんではリリースに2つの段階があるということで、1つ目はストアに公開すること。これは本当のリリースではなく公開しただけで、ここからユーザーに使ってもらい、KPIを設定し価値検証を行ない、ブラッシュアップを重ね改めてグランドオープンを行うそうです。本当のリリースはグランドオープンの後ということでした。
コミュニケーションについて
サービスに対する価値をゴールとしている為、ポジショントークで施策を決めるのはナンセンスと考えており、デザイナー、エンジニアが機能、タスクの1つ1つでユーザーの価値を考えているそうです。入社時にサービス開発の行動指針を伝え、行動指針をユーザー中心に置いているためトップダウンではなく、現場の意見を大切にしているとのことでした。ポジショントークで施策を決めるのはナンセンスという言葉が非常に共感でき、デザイナーがリーダーか、エンジニアがリーダーかでアプリのUIや機能が変わってしまうことが有りますが、ポジショントークではなくユーザーの価値を中心としていることでチーム全員がアプリケーションについて議論し、ユーザーの価値を提供するために開発しているのは非常に素晴らしいと思いました。
写真は、ミーティング風景。ユーザーの価値のためのコミュニケーションは惜しみません。
テストについて
Webでは、RSpecを使って機能テストを行ない、capybaraを使ってE2Eのテストを行っているのことでした。ビジネスとのスピード感もありますが、テストは極力書く文化にしており、iOS/Androidなどもこれからですが、プロダクトによってテストを書いているものも多いそうです。端末の範囲等をどのように決めているのか伺った所、全部ではなく8割を目指し、必要であればそれ以上カバーして言う方針ということでした。スマホアプリのUIテストについては、立ちあげ時のコストとビジネスのスピードを考えると、今は人の手でやっていることが多いということでしたが、今後UIの自動テストについても検討中ということでした。
その他
nanapiさんは、技術を凄く大切にしており、社内でも技術力向上のための施策をいくつか実施しています。
TechLunch
毎月2〜3名のエンジニアが、テクノロジーについての話をする場です。極力業務ではなく、自分が興味ある技術について発表することを目的としています。
全社員への週1プログラミング研修
CTOの和田さんを中心として、非エンジニアの方に対してプログラミングの研修を行っているそうです。週1回の研修が3ヶ月かけて行われており、Telnetなどの基本的な部分からはじめ、最終的には全員がPHPで掲示板を作れるようになるとのことで、この研修の濃密ぶりがわかると思います。「技術が正義」という文化を掲げているからこそ、非エンジニアの方も技術を学ぶ姿勢ができるのだと思います。
写真は共有スペース。気分転換にココでコーティングを行うエンジニアの方も多いそうです。
今回登場したツール
コミュニケーション
- チャット:Slack
- リポジトリ:github
- タスク管理:PivotalTracker
- wiki:Qiita:Team
自動化
テスト
デザイン
- インタラクション:Keynote
- インタラクション:Adobe Flash
※nanapiさんでは、上記以外にも様々なツールを利用しております。上記はインタビュー時に伺った内容のものを記載しています。
まとめ
第9回目はnanapiさんにインタビューさせてもらいました。「できることをふやす」というビジョンを掲げ、「技術は正義」という文化を作っているnanapiさんですが、ビジョンがしっかり掲げられており、かつ文化も浸透していて、ユーザーの価値を再優先に考えているので、エンジニア、デザイナー、ディレクターといった各ポジションでバラバラになることはなく、必要があれば議論を重ねて良い物を作っていくことができるのだと思います。
ユーザーの価値を一番に考え、リリース後も価値検証を行うというアプリケーション開発を行う上では当たり前のことなのですが、じゃあ実践できるかというと実践できている会社さんは少ないのではないかと思います。それを実践しているnanapiさんのサービスに今後も注目です!
最後に写真を取らせていただきました。左からCCO上谷さん、私、CTO和田さんです。お忙しいところありがとうございました!!